<template>
  <div class="edit_container">
    <div class="btn_box">
      <el-button @click.stop="goBack">返回</el-button>
    </div>
    <Motion ref="motion" form-type="edit" :patient-info="patientInfo" :assess-info="assessInfo" :doctor-type="doctorType" />
    <div class="submit_btn_box">
      <el-button type="primary" :loading="submitLoading" @click.stop="submit">保存</el-button>
    </div>
  </div>
</template>

<script>
import Motion from '../../assessSys/components/motion.vue'
import { athleticAbilityDetail, athleticAbilityEvaluate } from '@/api/treatment/treatment.js'
import { queryPatientInfo } from '@/api/residentPhysician/cureBilling.js'
import moment from 'moment'
import { mapGetters } from 'vuex'
import estimate from '@/mixins/estimate.js'

export default {
  name: 'MotionEdit',
  components: { Motion },
  mixins: [estimate],
  data() {
    return {
      assessId: 0,
      type: 0,
      source: 1,
      patientId: 0,
      patientInfo: {},
      assessInfo: {},
      submitLoading: false
    }
  },
  computed: {
    ...mapGetters([
      'user'
    ]),
    doctorType() {
      const sourceMap = {
        1: 'hospital',
        2: 'outpatient',
        3: 'therapists'
      }
      return sourceMap[this.source]
    }
  },
  mounted() {
    this.type = this.$route.query.type || 0
    this.source = this.$route.query.source
    this.assessId = this.$route.query.id
    this.patientId = this.$route.query.patientId
    this.getAssessInfo()
  },
  methods: {
    getAssessInfo() {
      // 执行获取治疗详情
      if(this.assessId == 0 && this.patientId == 0){
        this.$message.error('缺少医嘱ID或者患者ID')
        return
      }
      if(this.assessId){
        athleticAbilityDetail({
          type: this.type,
          evaluateSource: this.source,
          relationId: this.assessId
        }).then(res => {
          this.patientInfo = {
            ...res.content
          }
          if (res.content.evaluateTime) {
            res.content.evaluateTime = moment(res.content.evaluateTime).format('YYYY-MM-DD HH:mm:ss')
          } else {
            res.content.evaluateTime = '/'
          }

          if (!res.content.evaluateUser) {
            res.content.evaluateUser = this.user.realname
          }
          this.assessInfo = {
            ...this.assessInfo,
            ...res.content
          }
        })
      }else{
        queryPatientInfo({
          page: 1,
          size: 10,
          hisPatientId: this.patientId
        }).then(response => {
          let { code, content } = response;
          let patientInfo = {}
          if (code === 0 && content) {
            patientInfo = content[0];
            console.log(patientInfo)
          } else {
            patientInfo = {};
          }
          this.patientInfo = {
            patientName: patientInfo.patientName,
            genderName: patientInfo.gender === 0 ? '女' : '男',
            age: patientInfo.age,
            departmentName: patientInfo.departmentName,
            admissionNum: patientInfo.admissionNum,
            sickRegion: patientInfo.sickRegion,
            bedNum: patientInfo.bedNum
          }
          let estimate2 = this.getEstimate(this.source, this.patientId, 2)
          if(estimate2){
            let localAssessInfo = this.getAssessInfoByEstimate(estimate2)
            this.assessInfo = {
              ...this.patientInfo,
              ...localAssessInfo,
              evaluateUser: this.user.realname,
              evaluateTime: '/'
            }
          }else{
            this.assessInfo = {
              ...this.patientInfo,
              evaluateUser: this.user.realname,
              evaluateTime: '/'
            }
          }    
        }).catch(error => {
          this.$notify({
            title: '提示',
            message: '网络出差了,请稍后再试',
            type: 'danger'
          });
        })
      }
    },
    goBack() {
      this.$store.dispatch('tagsView/delView', this.$route)
      this.$router.back()
    },
    submit() {
      if(this.assessId){
        this.$refs.motion.getFormData().then(data => {
          this.submitLoading = true
          athleticAbilityEvaluate({
            relationId: this.assessId,
            evaluateSource: this.source,
            evaluatePurpose: data.evaluatePurpose,
            facialParalysis: data.facialParalysis,
            totalScore: data.totalScore
          }).then(res => {
            this.$message.success('成功')
            this.$store.dispatch('tagsView/delView', this.$route)
            this.$router.back()
          }).catch(err => {
            this.$message.error(err.msg)
          }).finally(() => {
            this.submitLoading = false
          })
        })
      }else{
        this.$refs.motion.saveLocalFormData(this.source, this.patientId).then(() => {
          this.$message.success('成功')
          this.$store.dispatch('tagsView/delView', this.$route)
          this.$router.back()
        })
      }
    }
  }
}
</script>

<style lang="scss" scoped>
@import url('./style.scss');
</style>
